\documentclass[a4paper,12pt]{report}
\usepackage[T1]{fontenc}				% codifica dei font
\usepackage[utf8]{inputenc}			% codifica di input
\usepackage[italian]{babel}			% trattare le lingue
\usepackage{indentfirst}				% indentazione della prima riga del paragrafo
\usepackage{enumitem}						% personalizzazione degli elenchi
\usepackage{microtype}					% migliora il riempimento delle righe
\usepackage[colorlinks]{hyperref}	% colora i link
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage{tabularx}
%\usepackage{comment}
\usepackage{graphicx}
\usepackage[font=small]{caption}
%\usepackage{frontespizio}

\author{Simone Cainero}
\title{Configuration Management}

% definisco l'ambiente "tabella"
\newenvironment{tabellaX}[2]%
	{\begin{table}{#1}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#2}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}

\newenvironment{tabella}[1]%
	{\begin{table}{b}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#1}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}


\begin{document}
	\begin{titlepage}
		%\begin{figure}%[htbp]
		%	\centering
		%	\includegraphics[width=0.5\textwidth]{crystal.jpg}
		%\end{figure}

		\begin{center}
			\vspace{1cm}
			\Huge{Crystal Software}
			\vspace{2cm}

			{\fontsize{40}{50}\selectfont Configuration Management}
		\end{center}

		\begin{table}[b!]\begin{center}\begin{tabularx}{\textwidth}{rlXl}
			\toprule
			\textbf{Rev.}	& \textbf{Data}		& \textbf{Descrizione}														& \textbf{Autore} \\
			\midrule
			1.5				& 20/02/2013		& Aggiunta sezione \emph{Sviluppo}										& Simone Cainero \\
			\midrule
			1.4				& 20/12/2012		& Aggiornamento responsabilità												& Simone Cainero \\
			\midrule
			1.3				& 03/11/2012		& Aggiornamento formato dei verbali, responsabilità, processo			& Simone Cainero \\
			\midrule
			1.2				& 25/10/2012		& Aggiornamento formato dei documenti, naming e change management	& Simone Cainero \\
			\midrule
			1.1				& 23/10/2012		& Aggiornamento versioning, positioning e formato dei documenti		& Simone Cainero \\
			\midrule
			1.0				& 15/10/2012		& Creazione del documento													& Simone Cainero \\
			\bottomrule
		\end{tabularx}\end{center}\end{table}
	\end{titlepage}

	\tableofcontents

	\chapter{Scopo e audience}
		Lo scopo di questo documento è di stabilire le metodologie, le procedure e gli standard con i quali gestire in qualità i prodotti del processo di sviluppo software.
		Il documento è rivolto ai membri del team Crystal Software.

	\chapter{Glossario}
	Di seguito alcuni termini utilizzati nel documento.

	\begin{itemize}
		\item \emph{CM}: Configuration management.
	\end{itemize}

	\chapter{Membri e responsabilità}
		Il team Crystal Software è composto dai seguenti membri:
		\begin{table}[htbp]\footnotesize\begin{center}\begin{tabularx}{\textwidth}{lllX}
			\toprule
			\textbf{Cognome}	& \textbf{Nome}		& \textbf{Matricola}		& \textbf{Contatto} \\
			\midrule
			Cainero					& Simone				& 90636 						& \href{mailto:simone.cainero@gmail.com}{simone.cainero@gmail.com} \\
			\bottomrule
		\end{tabularx}\end{center}\end{table}

		Di seguito le responsabilità dei membri del team (da aggiornarsi non appena saranno disponibili nuove informazioni):
		\begin{table}[htbp]\footnotesize\begin{center}\begin{tabularx}{\textwidth}{llX}
			\toprule
			\textbf{Responsabilità}		& \textbf{Membro}	& \textbf{Descrizione} \\
			\midrule
			Gestione del progetto			& Cainero Simone	& Supervisiona il progetto, coordina membri e attività. \\
			\midrule
			Configuration Management	& Cainero Simone	& Aggiorna il CM e mantiene tutti i processi e i prodotti in conformità con il CM. \\
			\midrule
			Segreteria							& Cainero Simone	& Redige i verbali delle riunioni. \\
			\midrule
			Relazioni con il cliente	& Cainero Simone	& Mantiene i contatti con il cliente. \\
			\midrule
			Materiale tecnico				& Cainero Simone	& Procura gli strumenti necessari (software, hardware, cancelleria...). \\
			\midrule
			Analisi e specifica requisiti	& Cainero Simone	& Effettua l'analisi e la specifica dei requisiti. \\
			\midrule
			Gestione della progettazione	& Cainero Simone	& Supervisiona la fase di progettazione, coordinando i vari progettisti e verificando che i prodotti di questa fase siano conformi al documento delle specifiche. \\
			\midrule
			Progettazione						& Tutti i membri	& Effettua la fase di progettazione. \\
			\midrule
			Gestione dello sviluppo		& Cainero Simone	& Supervisiona la fase di sviluppo, coordinando i vari sviluppatori e verificando che i prodotti di questa fase siano conformi al documento di progetto. \\
			\midrule
			Sviluppo							& Tutti i membri	& Effettua la fase di sviluppo. \\
			\midrule
			Gestione del testing			& Cainero Siomone	& Predispone il piano di testing e supervisiona la fase di test. \\
			\midrule
			Testing								& Cainero Simone	& Effettua il testing del sistema. \\
			\midrule
			Qualità								& Cainero Simone	& Mantiene il documento della qualità, verifica la qualità. \\
			\midrule
			Metriche							& Cainero Simone	& Mantiene il documento in cui si definiscono le metriche da utilizzare durante il processo software. \\
			\midrule
			Stima costi e preventivo	& Cainero Simone	& Effettua la stima dei costi e prepara un preventivo per il cliente. \\
			\bottomrule

		\end{tabularx}\end{center}\end{table}

	\chapter{Comunicazioni}
		\section{Comunicazioni interne}
			Le comunicazioni interne avverranno tramite l'indirizzo e-mail \href{mailto:simone.cainero@gmail.com}{simone.cainero@gmail.com}, per cui tutti i membri del gruppo avranno accesso ad ogni comunicazione. Se il messaggio è riferito ad un certo membro in particolare, il mittente avrà cura di segnalarlo all'attenzione di quel membro.

		\section{Comunicazioni esterne}
			Chiunque può mettersi in contatto con il team tramite l'indirizzo \href{mailto:simone.cainero@gmail.com}{simone.cainero@gmail.com}.
	
	\chapter{Consuntivazione}
		Ogni membro del team dovrà consuntivare ogni suo lavoro utilizzando l'apposito file ‘‘Consuntivo.xlsx’’.

	\chapter{Gestione documenti}
% Positioning
		\section{Positioning}
			\begin{par}È stato scelto di gestire il positioning del progetto attraverso \href{http://it.wikipedia.org/wiki/Subversion}{Subversion} (noto anche come SVN, che è il nome del suo client a riga di comando). Fisicamente i file risiederanno su Google Code all'indirizzo
			\begin{center}
				\href{http://code.google.com/p/crystal-software/source/browse/#svn\%2Ftrunk/}{http://code.google.com/p/crystal-software/source/browse/\#svn\%2Ftrunk/}
			\end{center}\end{par}
			\begin{par}Saranno suddivisi nel seguente modo:
			\begin{itemize}
			\item \emph{documentazione}: contiene tutti i documenti del progetto, suddivisi in documenti esterni (visionati anche dal cliente), documenti interni (utilizzati solo dal team), modelli, immagini.
			\item \emph{sviluppo}: contiene tutti i sorgenti.
			\end{itemize}\end{par}
			\begin{par}Le modifiche del progetto passano attraverso il paradigma check-in/check-out. Di seguito la procedura per il check-out: dalla linea di comando posizionarsi nella directory nella quale si vuole copiare il repository e digitare\end{par}
			\bigskip
{\scriptsize svn checkout https://crystal-software.googlecode.com/svn/trunk/ crystal-software --username NOME}
			\bigskip
			\begin{par}dove NOME è il nome utente del membro del team.\end{par}

% Versioning
		\section{Versioning}\label{versioning}
		\begin{par}Il versioning dei file contenente codice sorgente avviene automaticamente attraverso Subversion. Per quanto riguarda la documentazione, invece, la versione verrà indicata manualmente con la sintassi \emph{A.B}, dove il livello di numerazione B sarà modificato ogni qual volta vengano apportate delle modifiche (anche minime) al documento, mentre il livello A sarà modificato solo in caso di modifiche sostanziali al file. La versione verrà indicata nel frontespizio dei file, nell'apposita tabella delle modifiche. Ad ogni aggiornamento di un documento bisognerà specificare un commento descrittivo.\end{par}

% Backup
		\section{Backup}
		\begin{par}L'assenza di perdita di dati è garantita da Google Code.\end{par}

% Formato e struttura dei documenti
		\section{Formato e struttura dei documenti}
		\begin{par}È stato scelto di redigere i documenti testuali in \LaTeX. Questo per garantire una facile gestione del formato standard per i documenti, e per ottenere una buona qualità dei documenti. Per ogni documento verranno mantenute sul repository sia il sorgente ‘‘.tex’’, sia il compilato ‘‘.pdf’’. L'unica eccezione è il formato dei verbali delle riunioni, che saranno redatti in Word per motivi di comodità e rapidità.\end{par}
		\begin{par}Per i documenti a carattere tabellare, invece, verrà usato il software ‘‘Microsoft Excel 2011’’.\end{par}
		\begin{par}Per quanto riguarda i documenti in \LaTeX, questi verranno redatti seguendo precisi standard strutturali, ovvero seguendo i rispettivi modelli. Inoltre tutti i documenti inizieranno con un frontespizio contenente il nome e il logo del team, il nome del documento, e la tabella delle versioni (vedi paragrafo~\ref{versioning}). I modelli di ciascun documento sono posizionati nella directory ‘‘Modelli’’ (per i nomi vedi paragrafo~\ref{naming}).\end{par}

% Naming
		\section{Naming}\label{naming}
		\begin{par}La tabella~\ref{naming_tab} specifica i nomi dei sorgeti dei documenti utilizzati (nel caso di file \LaTeX, il relativo file compilato avrà lo stesso nome, con l'estensione ‘‘.pdf’’).\end{par}
		
		\begin{table}[htbp]\caption{Naming dei file.}\label{naming_tab}\footnotesize\begin{center}\begin{tabularx}{\textwidth}{lX}
		\toprule
		\textbf{Nome}							& \textbf{Descrizione} \\
		\midrule
		ConfigurationManagement.tex	& Configuration Management. \\
		\midrule
		AnalisiRequisiti.tex				& Analisi dei requisiti. \\
		\midrule
		SpecificaRequisiti.tex			& Specifica dei requisiti. \\
		\midrule
		Progetto.tex							& Prodotto della fase di progettazione del sistema. \\
		\midrule
		Testing.tex							& Descrizione del testing. \\
		\midrule
		Metriche.tex							& Descrizione delle metriche utilizzate. \\
		\midrule
		AnalisiCosti.tex					& Analisi del costo del software. \\
		\midrule
		ModelloGenerale.tex				& Modello standard per tutti i documenti che non hanno un modello specifico. \\
		\midrule
		ModelloVerbali.docx				& Modello per i verbali. \\
		\midrule
		ModelloAnalisiRequisiti.tex	& Modello per il documento di analisi dei requisiti. \\
		\midrule
		ModelloSpecificaRequisiti.tex	& Modello per il documento di specifica dei requisiti. \\
		\midrule
		ModelloProgetto.tex				& Modello per il documento di progetto. \\
		\midrule
		ModelloTesting.tex					& Modello per il documento di testing. \\
		\midrule
		ModelloMetriche.tex				& Modello per il documento delle metriche. \\
		\midrule
		Verbale\_aaaa\_mm\_dd.tex		& Verbale delle riunioni (il nome del file contiene il giorno della riunione, secondo il formato riportato). \\
		\midrule
		Consuntivo.xlsx						& Mantiene la consuntivazione delle ore. \\
		\midrule
		Modifiche.xlsx						& Mantiene l'elenco e lo stato delle richieste di modifiche. \\
		\bottomrule
		\end{tabularx}\end{center}\end{table}

% Change Management
		\section{Change Management}
		Per le richieste di modifica verrà utilizzato il file ‘‘Modifiche.xlsx’’. Il membro del team che desidera effettuare una richiesta di modifica dovrà riempire tutti i campi della tabella~\ref{change_management_tab1} (tra parentesi i campi a scelta multipla).
		\begin{table}[htbp]\caption{File delle modifiche: campi da compilare per richiedere una modifica.}\label{change_management_tab1}\footnotesize\begin{center}\begin{tabularx}{\textwidth}{lX}
		\toprule
		\textbf{Campo}			& \textbf{Descrizione} \\
		\midrule
		Richiedente				& Nome del membro che richiede la modifica \\
		\midrule
		Data richiesta			& Data della richiesta \\
		\midrule
		Priorità					& Priorità stimata della modifica (BASSA, MEDIA, ALTA) \\
		\midrule
		Nome file					& Nome del file da modificare \\
		\midrule
		Descrizione modifica	& Breve descrizione della modifica \\
		\bottomrule
		\end{tabularx}\end{center}\end{table}

		Le modifiche saranno discusse durante le successive riunioni, in ordine di priorità. L'assemblea deciderà se approvare o meno la modifica, e compilerà i rimanenti campi della tabella~\ref{change_management_tab2} (tra parentesi i campi a scelta multipla).
		\begin{table}[htbp]\caption{File delle modifiche: campi da compilare per approvare/rifiutare una modifica.}\label{change_management_tab2}\footnotesize\begin{center}\begin{tabularx}{\textwidth}{lX}
		\toprule
		\textbf{Campo}			& \textbf{Descrizione} \\
		\midrule
		Decisione					& Indica se la modifica è stata approvata o rifiutata (APPROVATA, RIFIUTATA) \\
		\midrule
		Data decisione			& Data della decisione \\
		\midrule
		Commento					& Spiegazione delle motivazioni della decisione \\
		\bottomrule
		\end{tabularx}\end{center}\end{table}

% Sviluppo
		\section{Sviluppo}
		\begin{par}Per lo sviluppo del codice del software verrà utilizzato l'ambiente di sviluppo \emph{Eclipse}. Dato che questo ambiente crea e mantiene un proprio insieme di directory per i propri progetti, sarà necessario ad ogni modifica del codice copiare i file modificati nell'apposita directory di Subversion.\end{par}

% Modello di sviluppo
	\chapter{Modello di sviluppo}
	\begin{par}Il progetto sarà svolto seguendo il modello a cascata. Di conseguenza è importante che i prodotti di ciascuna fase siano il più possibile definitivi, in modo che le successive fasi possano essere svolte sulla base di decisioni certe. Eventuali modifiche impreviste saranno discusse durante una riunione. La fattibilità di tali modifiche sarà valutata in funzione dell'importanza della modifica, della complessità e dello stato di avanzamento del progetto.\end{par}
\end{document}
